//
//  MMGTabBar.swift
//  MyMicroblog
//
//  Created by Mac on 17/1/4.
//  Copyright © 2017年 itcast. All rights reserved.
//

import UIKit

class MMGTabBar: UITabBar {
    
    var composeClosure: (() -> ())?
    
    // 重写构造函数
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        // 获取撰写按钮,加入到子视图中
        addSubview(composeButton)
        
        composeButton.addTarget(self, action: #selector(clickCoposeButton), for: UIControlEvents.touchUpInside)
    }
    
    @objc private func clickCoposeButton() {
    
        composeClosure!()
    }
    
    
    // 不允许使用 xib 创建该 tabBar
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 在子视图布局中重新设置 item 尺寸位置
    override func layoutSubviews() {
        super.layoutSubviews()
        // 设置尺寸信息
        let itemWidth:CGFloat = bounds.width / 5
        let itemHeight:CGFloat = bounds.height
        // 遍历子视图
        var count = 0
        for subView in subviews {
            // 如果得到的子视图是 UITabBarButton,就为其设置尺寸和位置
            if subView.isKind(of: NSClassFromString("UITabBarButton")!) {
            
                // 设置子视图位置和大小
                subView.frame = CGRect(x: CGFloat(count) * itemWidth, y: 0, width: itemWidth, height: itemHeight)
                
                count += (count == 1 ? 2 : 1)
            }
        }
        // 设置撰写按钮位置尺寸
        composeButton.center = CGPoint(x: bounds.width / 2, y: bounds.height / 2)
        composeButton.bounds.size = CGSize(width: itemWidth, height: itemHeight)
    }
    
    // 懒加载撰写按钮
    // 在懒加载中,可以省略闭包中的参数部分
    lazy var composeButton: UIButton = {
        
        let btn = UIButton()
        
        // 设置视图
        btn.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add"), for: .normal)
        btn.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add_highlighted"), for: .highlighted)
        
        // 设置背景视图
        btn.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button"), for: .normal)
        btn.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button_highlighted"), for: .highlighted)
        
        btn.sizeToFit()
        return btn
    }()

}
